<template>
  <div class="school">
    <h2>学校名称：{{ name }}</h2>
    <h2>学校地址：{{ address }}</h2>
  </div>
</template>

<script>
import pubsub from "pubsub-js"; //引入过后是一个对象直接使用他进行方法的调用
export default {
  name: "School",
  data() {
    return {
      name: "大学",
      address: "北京",
    };
  },
  mounted() {
    //#region
    console.log("School", this);
    this.$bus.$on("hello", (data) => {
      console.log("我是School组件，收到了数据", data);
    });
    //#endregion

    // 在运行前，需要安装库， npm i pubsub-js

    //订阅消息,注意保存这个Id标识，用于后面的取消订阅订阅消息
    //对于回调函数，如果使用function(){}的形式，this的指针就会undefine，所以一般使用箭头函数，或者在methods中定义函数，使用this进行调用
    this.pubId = pubsub.subscribe("hello", (msgName, data) => {
      console.log(this);
      console.log("有人发布了hello消息，hello消息的回调执行了", msgName, data);
    });
  },
  beforeDestroy() {
    // this.$bus.$off('hello')

    //取消订阅消息
    pubsub.unsubscribe(this.pubId);
  },
};
</script>

<style scoped>
.school {
  background-color: skyblue;
  padding: 5px;
}
</style>